Il Paesaggio archeologico dell’Asia Occidentale Antica

Studio e analisi dei sistemi di indagine remote sensing, morfologia e topografia

Andrea Titolo

Università di Torino

Muoversi nelle slide

  • F tutto schermo
  • → , ↓ , SPACE , N, L , J Slide successiva
  • ← , ↑ , P , H , K Slide precedente
  • Shift + ←/↑/→/↓ Vai alla prima/ultima slide
  • ESC, O Panoramica delle slide
  • M Menu

Introduzione ai GIS - QGIS Avanzato

Introduzione ai GIS - QGIS Avanzato


Inizieremo ad affrontare alcuni argomenti più complessi di QGIS, in particolare l’unione tra tabelle attributi, la gestione avanzata dei layer e degli stili tramite geopackage, calcolatore di campi ed espressioni.

  • Join tabellare
  • Gestione avanzata dei layer
  • Il calcolatore di campi di QGIS
  • Espressioni di QGIS
  • Gestione degli stili


Nel frattempo, aprire QGIS!

Link alle slides:

Una volta caricate dal link, le slide dovrebbero seguire la presentazione in automatico.

QGIS Avanzato

QGIS avanzato – Caricare altri dati

Ritorniamo oggi nell’area della piana di Sweyhat (per tornarci rapidamente, clicchiamo con il tasto destro su “wilkinson_sweyhat_modificato” e poi clicchiamo su “Zoom al layer”).

Per l’esercizio di oggi caricheremo un’ulteriore serie di dati dal geopackage “carchemish_addition”.

QGIS avanzato – Caricare altri dati

Clicchiamo con il tasto destro su Geopackage e clicchiamo su “Nuova Connessione…”

QGIS avanzato – Caricare altri dati

Cerchiamo il file “carchemish_addition.gpkg” e clicchiamo su Open per collegare il geopackage al nostro progetto qgis.

QGIS avanzato – Caricare altri dati

Apriamo la lista di layer all’interno del geopackage (sempre nel pannello di Browser) e selezioniamo i layer “brt_basemap_lakes”, “brt_geomorph_sue_sanlaville”, “brt_sue_all_table”, “brt_sue_ia_types_area”, clicchiamo con il tasto destro del mouse e selezioniamo “Aggiungi Layer Selezionati al Progetto”.

QGIS avanzato – Esplorare dati

Per essere sicuri di avere una visione d’insieme completa, selezioniamo nuovamente i layer appena aggiunti e cliccando con il tasto destro del mouse selezioniamo “Zoom sui Layer”.

QGIS avanzato – Esplorare dati

Come possiamo vedere dalla lista di layer, abbiamo un layer esclusivamente tabellare (btr_sue_ia_all_table), se apriamo la tabella attributi di quest’ultimo possiamo vedere come contenga informazioni su nomi di siti, tipologia e periodo di occupazione (indicato con uno 0 se non occupato e con 1 se occupato).

QGIS avanzato – Esplorare dati

L’obiettivo è adesso unire questa informazione e associarla a delle geometrie già esistenti nel nostro progetto, in questo caso il layer carchemish_db siti_carchemish, per farlo, dobbiamo compiere quello che tecnicamente si chiama “join tabellare”.

QGIS avanzato – Join Tabellare

QGIS avanzato – Join Tabellare

Il join tabellare, come dice anche il nome, è l’unione di due (o più) tabelle attributi sulla base di un campo in comune. Nel nostro caso, come detto in precedenza, il campo in comune sarà “site_name”.

Per procedere con il join clicchiamo sul tasto destro sul layer carchemish_db siti_archeo e poi su Proprietà.

QGIS avanzato – Join Tabellare

Dalla lista di finestre nel pannello delle proprietà selezioniamo “Join”. Ci si aprirà una finestra da cui potremo aggiungere, modificare, rimuovere e gestire tutti i nostri join tabellari. Questo pannello sarà vuoto, ovviamente. Aggiungiamo un nuovo join tramite il pulsate verde a forma di più in basso (Aggiungi nuova unione).

QGIS avanzato – Join Tabellare

Nel nuovo pannello che si aprirà, dobbiamo selezionare il vettore di join dal menu a tendina, ovvero il vettore da cui prendere i dati da aggiungere al layer in uso. Per noi il vettore di join sarà quindi btr_sue_all_table. Come campo di unione, selezioniamo “site_name” e come campo di destinazione selezioniamo “Name”. Questi due elementi dicono a qgis quali sono i due campi da confrontare per cercare valori in comune su cui unire le due tabelle.

QGIS avanzato – Join Tabellare

Spuntiamo la casella “Campi uniti” per selezionare manualmente quali campi del layer tabellare unire (selezioniamo tutti i campi tranne i primi tre).

Spuntiamo anche la casella “Prefisso del nome del campo personalizzato” e rimuoviamo il testo presente nel box, così che i campi uniti non avranno prefissi ma saranno aggiunti con il loro nome originale.

QGIS avanzato – Join Tabellare

Una volta rimosso anche il prefisso, ricontrolliamo le impostazioni e clicchiamo su OK.

QGIS avanzato – Join Tabellare

Il pannello di Join verrà popolato dall’unione appena creata, di cui avremo anche un riassunto delle varie impostazioni (ad es. il numero di campi uniti). Notate la spunta affianco a “Vettore unito in memoria virtuale”: questa opzione indica che l’unione che abbiamo creato non è permanente, e che se dovessimo rimuovere uno dei due layer, l’unione sarebbe persa. Possiamo modificare questa opzione riaprendo le impostazioni del join e togliere la spunta alla casella.

QGIS avanzato – Join Tabellare

Un’altra opzione importante è “Layer di join modificabile”, che determina la possibilità o meno di modicare i campi delle colonne unite tramite join. In questo caso non l’abbiamo reso possibile, ma nella maggior parte delle occasioni vorrete spuntare questa casella per avere pieno controllo sul layer. Anche questa opzione si trova sempre nelle impostazioni del join.

QGIS avanzato – Join Tabellare

Se apriamo adesso la tabella attributi del layer siti_archeo, possiamo vedere come i campi del layer tabellare sono stati aggiunti correttamente. Possiamo notare anche la presenza di molti NULL nella tabella. Questi valori nulli vengono generati nel momento in cui QGIS non riesce a trovare una corrispondenza 1:1 tra i valori dei due campi di unione. QGIS quindi non interrompe il join, ma semplicemente lascia nulli i campi per quei valori (Nomi) non presenti nel layer tabellare.

QGIS avanzato – Join Tabellare

Questa unione ci permette di accedere ad alcune delle maggiori potenzialità dei dati spaziali: filtrare, selezionare e visualizzare dati sulla base di alcune condizioni e osservare la loro disposizione nel paesaggio sulla mappa di base che abbiamo inserito. Per cominciare ad eseguire delle semplici selezioni, dobbiamo cominciare a ricorrere alle espressioni di QGIS.

QGIS avanzato – Il calcolatore di campi e le espressioni

QGIS avanzato – Il calcolatore di campi e le espressioni

Nella barra degli strumenti in alto nella tabella attributi possiamo trovare una serie di pulsanti. Quello di cui abbiamo bisogno è il pulsante con il simbolo della sommatoria e un quadrato giallo (Seleziona elementi usando un’espressione).

QGIS avanzato – Il calcolatore di campi e le espressioni

Si aprirà un nuovo pannello diviso in tre parti. Al centro troviamo una serie di menu a tendina con funzioni, variabili, ed altri elementi utili per generare espressioni in QGIS. A sinistra troviamo l’editor, dove scriveremo le nostre espressioni, mentre a destra troviamo un pannello in cui verranno visualizzati descrizioni delle funzioni, aiuti, liste di campi, ecc.

QGIS avanzato – Il calcolatore di campi e le espressioni

In questa sede vogliamo selezionare tutti i siti occupati durante l’età del Ferro, che tradotto secondo le impostazioni della nostra tabella, tutti i siti il cui valore della colonna “IA” sia uguale a 1.

Qgis ci permette di visualizzare e scegliere i singoli campi e valori della nostra tabella.

QGIS avanzato – Il calcolatore di campi e le espressioni

Apriamo quindi il menu a tendina “Campi e valori” al centro. Ci si aprirà una lista delle colonne della nostra tabella, cerchiamo “IA” e clicchiamoci due volte per aggiungerlo nell’editor a sinistra. Notate anche come si sia popolato anche il pannello di destra. La sezione inferiore di questo pannello ci permette di avere una lista di valori presenti in quello specifico campo, così da poterli selezionare più facilmente. Clicchiamo su “Tutti i Valori Univoci” a destra per mostrarli.

QGIS avanzato – Il calcolatore di campi e le espressioni

Vediamo che “IA” è stato aggiunto nell’editor a sinistra. Notare le “” in cui è racchiuso il nome del campo. Nelle espressioni di QGIS le virgolette hanno un valore e mettere apici o virgolette non è la stessa cosa, come vedremo a breve.

QGIS avanzato – Il calcolatore di campi e le espressioni

Ora dobbiamo continuare la nostra espressione. Come detto, vogliamo selezionare tutti i campi il cui valore sia uguale ad 1. Apriamo quindi il menu a tendina “Operatori” contenente appunto una lista di operatori e clicchiamo due volte su “=”. In alternativa, possiamo anche scrivere = nell’editor a sinistra.

QGIS avanzato – Il calcolatore di campi e le espressioni

Infine, ritorniamo nella nostra lista di campi e clicchiamo una volta sola su “IA”. Clicchiamo su “Tutti i valori univoci” e clicchiamo due volte su 1 per aggiungerlo all’editor. In questo momento la nostra espressione è completa e non ci sono errori (che sarebbero stati segnalati da qgis). Possiamo quindi cliccare su “Seleziona Elementi” per effettuare la selezione.

QGIS avanzato – Il calcolatore di campi e le espressioni

Ci apparirà una notifica nella schermata principale di qgis con il numero di elementi selezionati, e gli stessi elementi verranno evidenziati in blu nella nostra tabella attributi. Se scorriamo la tabella fino al campo IA, vedremo che come da noi definito, sono stati selezionati solo gli elementi dove IA=1.

QGIS avanzato – Il calcolatore di campi e le espressioni

Proviamo adesso a modificare alcuni dei nostri valori utilizzando le espressioni di QGIS. Deselezioniamo i siti appena selezionati tramite il pulsante “Deseleziona tutti gli elementi dal layer”.

QGIS avanzato – Il calcolatore di campi e le espressioni

Prepariamoci quindi ad una nuova selezione, riaprendo il pannello di selezione tramite espressioni. L’obiettivo questa volta è eliminare la parentesi che racchiudono alcuni nomi di siti. Dovremo quindi selezionare tutti i siti il cui campo Name inizierà con una parentesi.

QGIS avanzato – Il calcolatore di campi e le espressioni

Per questo tipo di selezione non stiamo cercando un operatore che esprima uguaglianza, ma uno che traduca “inizia per”. Una cosa del genere non esiste direttamente in QGIS, ma ci si può arrivare. L’operatore che cerchiamo si chiama ILIKE. Nella descrizione dell’operatore sono presenti alcuni esempi, alcuni dei quali ci possono guidare alla nostra soluzione. ILIKE è infatti molto utile per trovare valori che iniziano per, finiscono per, ecc.

QGIS avanzato – Il calcolatore di campi e le espressioni

La formula che cerchiamo è simile all’esempio proposto ‘ABCD’ ILIKE %B%, con il carattere % utilizzato come carattere jolly per indicare “qualsiasi carattere”. La formula che scriveremo sarà quindi:

“Name” ILIKE ‘%’ Che tradotta a parole può essere intesa come “selezionami tutti i valori della colonna Name, che hanno una parentesi iniziale seguita da qualsiasi carattere. Ricordate che le condizioni o i valori testuali dopo l’operatore devono essere racchiusi tra apici.

QGIS avanzato – Il calcolatore di campi e le espressioni

Clicchiamo su “Selezione Elementi” e vedremo come sono stati effettivamente selezionati i siti il cui nome è racchiuso tra parentesi.

L’obiettivo adesso è di rimuovere queste parentesi per ottenere il nome semplice.

QGIS avanzato – Il calcolatore di campi e le espressioni

Si potrebbe eseguire questa operazione manualmente, e forse per i 137 siti selezionati potrebbe non essere troppo difficile. Tuttavia immaginiamo di avere migliaia di record, l’operazione diventerebbe troppo dispendiosa. È in questo frangente che entra in gioco il calcolatore di campi. Apriamo il calcolatore di campi cliccando il pulsante a forma di abaco nella barra degli strumenti in alto nella tabella attributi.

QGIS avanzato – Il calcolatore di campi e le espressioni

Il calcolatore di campi di QGIS é molto simile al pannello della selezione tramite espressione, con delle sostanziali differenze. In cima sono infatti presenti una serie di opzioni per gestire e modificare i campi esistenti o crearne di nuovi. Possiamo vedere che è già selezionata la casella “Aggiorna solo gli elementi selezionati”, in quanto vogliamo rimuovere le parentesi solo dai campi che abbiamo già selezionato.

QGIS avanzato – Il calcolatore di campi e le espressioni

Quello che stiamo cercando non è un’operatore, ma una funzione, replace. La troviamo o cercando nella barra di ricerca, oppure sotto il menu Stringa. Replace ha un’ottima documentazione nel pannello a destra per capire come operare, ma per il momento clicchiamo due volte su replace per aggiungerlo all’editor, e apriamo una parentesi tonda per iniziare a scrivere la nostra espressione

QGIS avanzato – Il calcolatore di campi e le espressioni

Come evidenziato dalla sezione “Sintassi” nel pannello a destra, dobbiamo inserire, all’interno delle parentesi, una stringa, un before, e un after. Questi termini possono essere un po’ confusionari, ma la loro spiegazione ci può chiarire le idee. Dobbiamo infatti inserire prima una stringa in ingresso, ovvero i valori che vogliamo sostituire (i valori della colonna Name), la stringa da sostituire (una parentesi), e un valore con cui sostituirla (in questo caso, nulla, perché vogliamo solo rimuovere la parentesi).

QGIS avanzato – Il calcolatore di campi e le espressioni

Nel nostro caso specifico l’espressione sarà replace(“Name”, ‘(’, ’’) (scrivetela, non copiate da queste slide). Le stringhe da sostituire dovranno essere racchiuse tra apici, mentre il nome del campo tra virgolette. I due apici senza nulla indicano di sostituire la parentesi con un carattere vuoto, risultando quindi solo nella rimozione della parentesi.

QGIS avanzato – Il calcolatore di campi e le espressioni

Un ulteriore passaggio è infine quello di selezionare “Aggiorna campo esistente” e di selezionare “Name”dal menu a tendina. Vogliamo infatti aggiornare il valore del campo Name, non crearne uno nuovo.

Una volta fatto, clicchiamo su OK.

QGIS avanzato – Il calcolatore di campi e le espressioni

Come possiamo vedere dal risultato, ritornando alla nostra tabella attributi, abbiamo però rimosso una sola delle due parentesi. Rimuovere entrambe allo stesso momento richiederebbe un’espressione più complessa che non è il caso di affrontare adesso (per chi è interessato, l’espressione dovrebbe fare utilizzo di regex, o regular expression).

QGIS avanzato – Il calcolatore di campi e le espressioni

Tuttavia, possiamo semplicemente ripetere l’espressione appena eseguita, cambiando il tipo di parentesi. Sempre con i nostri siti selezionati in precedenza, riapriamo il calcolatore di campi.

QGIS avanzato – Il calcolatore di campi e le espressioni

Non c’è bisogno di riscrivere da zero l’espressione. Ogni espressione che scriviamo ed eseguiamo viene salvata da QGIS nel menu “Recente”. Apriamolo e troveremo l’espressione appena eseguita. Clicchiamoci due volte per re-inserirla nell’editor.

QGIS avanzato – Il calcolatore di campi e le espressioni

Da qui è molto semplice, cambiamo la parentesi da aperta a chiusa, e lasciamo tutto il resto com’era. Assicuriamoci che le opzioni “Aggiorna solo gli elementi selezionati” e “Aggiorna campo esistente” siano spuntate, e che il campo selezionato dal menu a tendina sotto quest’ultima opzione sia Name.

QGIS avanzato – Il calcolatore di campi e le espressioni

Possiamo notare come QGIS ci fornisca anche un’anteprima del risultato della nostra espressione, in basso a sinistra. Vedete infatti come Abu Drikha sia restituito senza parentesi, differentemente alla situazione attuale, evidente nel campo Elemento, sempre in basso a sinistra.

Premiamo OK per eseguire l’espressione.

QGIS avanzato – Il calcolatore di campi e le espressioni

Come possiamo vedere ora tutti i nomi dei siti sono esclusi dalle parentesi.

Abbiamo solo toccato di sfuggita le espressioni di QGIS e il calcolatore di campi, ma possiamo osservare come questi siano alcuni degli strumenti più potenti a disposizione per lavorare sui dati spaziali. Salviamo quindi il nostro layer.

QGIS avanzato – Simbolologia dei layer avanzata

QGIS avanzato – Simbolologia dei layer avanzata

Procediamo adesso ad esplorare un’altra funzione avanzata di QGIS, la simbologia. Abbiamo già visto alcune semplici simbologie, ma adesso entreremo più nel dettaglio esplorando la c.d. simbologia tramite regole e come gestire gli stili dei layer all’interno del geopackage, ed utilizzando velocemente ancora il calcolatore di campi. Per cominciare, “accendiamo” il layer btr_geomorph_sue_sanlaville” e zoomiamo al layer stesso (tasto destro sul layer → zoom al layer).

QGIS avanzato – Simbolologia dei layer avanzata

Apriamo il pannello di stile del layer e nella sezione Simbologia possiamo osservare come questa sia già impostata con delle regole predefinite. Riprenderemo questo concetto a breve, per il momento apriamo la tabella attributi del layer.

QGIS avanzato – Simbolologia dei layer avanzata

Una volta aperta la tabella, apriamo il calcolatore di campi. In questo esempio calcoleremo l’area di ogni singolo poligono. In questo caso, essendo unità geomorfologiche, questa operazione non è utilissima ai nostri fini, ma è un buon allenamento nel caso in cui serva calcolare l’estensione di siti ecc.

QGIS avanzato – Simbolologia dei layer avanzata

Nel campo di ricerca cerchiamo “area” e selezioniamo $area (la differenza tra le due opzioni è che $area tiene conto dell’ellissoide del progetto). L’area viene calcolata di default (a seconda delle impostazioni di QGIS) in metri quadrati. Per ottenere un’area in km quadrati, semplicemente scriviamo $area/100000.

Questa volta spuntiamo la casella su “Crea nuovo campo” e chiamiamolo “area”. Cambiamo il tipo di campo in “Numero decimale (real)”. Clicchiamo poi su OK.

QGIS avanzato – Simbolologia dei layer avanzata

Possiamo vedere che l’area di ogni singola geometria è stata aggiunta alla nostra tabella attributi. Per creare un nuovo campo QGIS apre le modifiche del layer, quindi ricordiamoci di salvare le modifiche apportate e chiuderle una volta concluso.

QGIS avanzato – Simbolologia dei layer avanzata

Vediamo adesso come copiare uno stile tra due layer, e salvarlo in modo che, una volta ricaricato il layer nella mappa, lo stile che abbiamo scelto venga applicato automaticamente. Abbiamo un layer lakes già presente nel nostro geopackage, clicchiamoci con il tasto destro → Stili → Copia Stile → Tutti gli elementi dello stile.

Nel caso non avessimo uno stile già presente, assegniamo un colore appropriato direttamente al layer btr_basemap_lakes.

QGIS avanzato – Simbolologia dei layer avanzata

Adesso clicchiamo con il tasto destro sul layer btr_basemap_lakes → Stili → Incolla Stile → Tutti gli elementi dello stile.

Notate come possiamo decidere di copiare solo alcuni elementi delle proprietà del layer, ciò rende molto elastica l’interoperabilità tra layer.

QGIS avanzato – Simbolologia dei layer avanzata

Possiamo vedere come lo stile è stato applicato correttamente anche al nuovo layer. Tuttavia, se adesso rimuovessimo e ricaricassimo nel progetto btr_basemap_lakes, vedremo che gli verrà assegnato nuovamente un colore randomico. Per ovviare a questo problema, possiamo salvare lo stile all’interno del geopackage.

QGIS avanzato – Simbolologia dei layer avanzata

Esistono diverse modalità per salvare lo stile di un layer. Apriamo le proprietà del layer e selezioniamo la sezione Simbologia. In basso a sinistra clicchiamo su Stile → Salva Stile.

QGIS avanzato – Simbolologia dei layer avanzata

Nel nuovo pannello, dal menu a tendina selezioniamo “Nel database (Geopackage)”. Se avessimo avuto uno shapefile, avremo dovuto salvare lo stile scegliendo l’opzione file di stile QGIS QML, e caricare lo stile manualmente quando necessario.

QGIS avanzato – Simbolologia dei layer avanzata

Il pannello cambierà una volta scelta l’opzione di salvare lo stile nel geopackage. Possiamo dare un nome allo stile (ad es. “laghi”) ed eventualmente aggiungerci una descrizione. Spuntiamo la casella “Usa per questo layer lo stile predefinito” di modo che la prossima volta che caricheremo il layer, questo avrà già lo stile che gli abbiamo selezionato.

QGIS avanzato – Simbolologia dei layer avanzata

Teoricamente, basterebbe ora cliccare OK, tuttavia, clicchiamo su annulla e vediamo anche l’altro metodo di salvataggio dello stile.

QGIS avanzato – Simbolologia dei layer avanzata

Sempre dalla finestra delle proprietà ri-clicchiamo su Stile, ma questa volta clicchiamo su “Salva Come Predefinito”.

QGIS avanzato – Simbolologia dei layer avanzata

Nella nuova finestra che ci appare, QGIS ci chiede dove salvare lo stile. Selezioniamo “Database della Sorgente Dati” ovvero, il geopackage di origine del layer. Il nome dello stile, in questo caso, coinciderà con il nome del layer. Clicchiamo e chiudiamo le proprietà del layer.

QGIS avanzato – Simbolologia dei layer avanzata

Proviamo a vedere se il processo è andato a buon fine. Rimuoviamo il layer btr_basemap_lakes dal progetto (Tasto destro → Rimuovi Layer).

QGIS avanzato – Simbolologia dei layer avanzata

Ritorniamo nel nostro pannello di Browser e ricarichiamo nuovamente il layer con un doppio click dalla lista sotto il nostro geopackage.

QGIS avanzato – Simbolologia dei layer avanzata

Come possiamo vedere, il layer è stato caricato correttamente nel progetto, mantenendo lo stile che avevamo impostato in precedenza, invece di essere rappresentato da un colore casuale.